package com.daedalus.klasaObjekte.StudentDetyra;/*
 * ushtrimi 2 
 * Matrica 3 shkurt 2012 - a
 * Author Kostika Gorica
 */

import java.util.Scanner;

public class Detyrat {

	
	public static void main(String[] args) {
		
		Student[] studentet;
		Lenda[] lendet;
		int[][] notat;
		Scanner in = new Scanner(System.in);	//per te lexuar nga tastjera
		int nr_st, nr_l;			// per numrin e studenteve dhe lendeve
		
		System.out.print("Numri i studenteve: ");	// pyes per nr e studenteve
		nr_st=in.nextInt();							// ruaj nr e studenteve
		System.out.print("Numri i lendeve: " );
		nr_l=in.nextInt();							// ruaj nr e lendeve
		
		// inicializoj vektoret dhe matricen mqs di numrin e elementeve
		
		notat=new int [nr_st][nr_l];
		lendet=new Lenda[nr_l];
		studentet=new Student[nr_st];
		
		// mbush te dhenat per studentet
		
		for( int i=0; i<studentet.length;i++){
			//lexoj te dhenat nga tastjera
			
			System.out.print("Emri i studentit: ");
			String em=in.next();
			System.out.print("Mbiemri i studentit: ");
			String mb=in.next();
			System.out.print("Viti i studentit: ");
			int v=in.nextInt();
			System.out.print("Gjinia e studentit: ");
			String gj=in.next();
			
			//krijoj objektin
			
			studentet[i]=new Student(em,mb,v,gj);			
		}
		
		// njesoj mbush te dhenat per lendet
		for( int i=0; i<lendet.length;i++){
			//lexoj te dhenat nga tastjera
			
			System.out.println("Emertimi i lendes : ");
			String em=in.next();
			
			System.out.print("Nr i krediteve: ");
			int k=in.nextInt();
			
			//krijoj objektin
			
			lendet[i]=new Lenda(em,k);			
		}
		
		// mbush te dhenat e detyrave, pra matricen
		for( int i=0; i<notat.length;i++){			// per cdo rresht ( student )
			for( int j=0; j<notat[i].length; j++)		// per cdo lende te ketij stud
			{
				//pyes perdoruesin
				System.out.printf("Studenti: %s %s , Detyra: %s "
					,studentet[i].getemri(),studentet[i].getMbiemri(),lendet[j].getEmertimi());
				
				// ruaj noten qe jep perdoruesi
				notat[i][j]=in.nextInt();
			}			
		}	

         // printojme matricen e detyrave
        System.out.printf("%-10s"," ");
        for( int i=0; i<lendet.length;i++){
			System.out.printf(" %-10s",lendet[i].getEmertimi());
		}
        System.out.println();
        for( int i=0; i<notat.length;i++){			// per cdo rresht ( student )
            System.out.printf("%-10s",studentet[i].getemri());
			for( int j=0; j<notat[i].length; j++)		// per cdo lende te ketij stud
			{
				System.out.printf("%-10d",notat[i][j]);
			}
            System.out.println();
		}
		
/*		ktu fillon pika a - pjesa e dyte
		gje studentin qe ka dorezuar me shume detyra
*/
		// marr nje vektor ndihmes qe do e perdor si numerues
		int[] nrDetyra=new int[nr_st];

		// numeroj detyrat per cdo student [i] (pra nota e ndryshme nga -1 )
		for (int i=0; i<notat.length; i++)		        // per cdo student
			for(int j=0; j<notat[i].length; j++)		    // ne cdo lende
				if (notat[i][j] !=  -1)			// nese detyra eshte marre
					nrDetyra[i]+=1;						// counter++
		
		// gjej studentin me me shume detyra te dorezuara
		int max=nrDetyra[0];		// supozoj se studenti me index 0 ka me shume detyra
		int stud_max = 0;			// ruaj indexin per kte student

		// kontrolloj vektorin nrDetyra per te gjetur maximumin
		for (int i=0; i< nrDetyra.length; i++)
			if ( nrDetyra[i] > max )			// nese gjej nje vlere me te madhe se max
			{
				max = nrDetyra[i];		// ruaj vleren max
				stud_max = i; 			// ruaj indexin e ketij studenti
			}
		
		// tani afishoj ne ekran studentin me me shume detyra
		
		System.out.printf("Studenti %s %s ka dorezuar me shume detyra: %d detyra."
				,studentet[stud_max].getemri(), studentet[stud_max].getMbiemri(), max );

        // testimi i pikes b
        detyraPerLende(lendet, notat);
	} // ktu mbaron main
	
	
	// ktu fillon pika b e ushtrimit
	// kemi nje funksion me vete
	
	//deklarojme funksionin
	
	public static void detyraPerLende(Lenda[] lendet, int[][] notat){
		Scanner s= new Scanner(System.in);		// per te lexuar nga tastjera
		String lenda;		// qe do jape perdoruesi
		int j;
		//pyes per lenden
		System.out.print("\nDetyra: ");
		//lexoj emertimin e lendes
		lenda=s.next();
		
		//  kerkoj per kte lende ne vektor
		for(  j=0; j<lendet.length; j++)
			if(lendet[j].getEmertimi().equals(lenda))
				break;
		
		// verifikoj nese lenda u gjet
		if(j==lendet.length)			// dmth cikli eshte kryer i plote, lenda nuk u gjet
		{
			System.out.print("Detyra nuk ekziston ");
			return;
		}
		
		//gjej nr e detyrave per kete lende me index [j]
		int nr_det = 0;   		// si fillim nr i detyrave eshte 0
		
		for (int i=0;i<notat.length; i++)
			if( notat[i][j] != -1)			// nese detyra eshte e marre
				nr_det ++;					// rrit me nje nr e detyrave
		
		// pra ne fund nr i detyrave per lenden [j]
		System.out.printf("Detyra : %s ka : %d detyra te marra", lendet[j].getEmertimi(),nr_det);
		
	} // mbaron metoda	

} // mbyllet klasa
